Currently, many companies, such as Hulu® and Netflix®, offer on-demand streaming video of television shows, movies, webisodes, trailers, clips and other types of media to a user at the user's computing device, commonly referred to as a “client device.” The client device requests the video from a server, commonly referred to as a “streaming video server,” which is transmitted to the client device in buffered increments over a network (also referred to as a “channel”) using a transport protocol, such as User Datagram Protocol (UDP), Real Time Protocol (RTP), Transmission Control Protocol (TCP), Hypertext Transfer Protocol (HTTP), etc. For example, the streaming video server may transmit content to be buffered by the client device that corresponds to the initial 10 minutes of a movie. The media player on the user's client device will then load the content from the buffer to be played by the media player.
If, however, the user has a slow connection (bandwidth constrained) with the streaming video server, then the delivery of the audio and video information may be delayed, in which case the user may see a “loading screen” during the watching of the video as the amount of video viewed by the user has caught up to the amount of video downloaded to the client device. The user then has to wait (e.g., five minutes) for the media player to download more of the video content from the streaming video server to fill the buffer on the client device again with the next amount of video (e.g., next ten minutes) to be viewed by the user. Once the buffer is filled again, the media player will continue to play the next buffered segment of the video. These streaming video pauses during the watching of the video allowing the media player to download more of the video content from the streaming video server before resuming can negatively impact the experience of the user.
Currently, attempts have been made to reduce these streaming video pauses by having the streaming video server coordinate with the client device to have the video stream spread out across multiple network interfaces and then reassembled on the client side. However, such a solution requires coordination between the streaming video server and the client device.
Another attempt to reduce these streaming video pauses is by eliminating some of the data in the video stream that is deemed to not be essential in viewing the video content thereby reducing the amount of data that is downloaded by the client device from the streaming video server. However, the quality of the streaming video is greatly reduced.
As a result, the current means for reducing these streaming video pauses are subject to various limitations, such as requiring coordination between the streaming video server and the client device or resulting in the reduction in the quality of the streaming video.